#include "bsp_gpio.h"
#include "bsp.h"
void gpio_init(GPIO_T * GPIO_PROTx,GPIO_MODE_T  mode,GPIO_SPEED_T speed,uint16_t  pin);
void MX_GPIO_Init(void)
{
	  /* Enable the GPIO_LED Clock */
	  RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOA);
	  RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOB);
    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOC);
    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOD);
	  RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOE);
		RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_AFIO);
	  GPIO_ConfigPinRemap(GPIO_REMAP_SWJ_JTAGDISABLE);  							///关闭jtag 启动sw 
	
/****************************IO输出***********************************************/	

gpio_init(STIRRER_PUMP_CTRL_GPIO_Port, 							GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	STIRRER_PUMP_CTRL_Pin);//搅拌泵 带调试应该是pwm
gpio_init(SODA_PUMP_CTRL_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	SODA_PUMP_CTRL_Pin);//苏达泵
gpio_init(HOT_PUMP_CTRL_GPIO_Port, 									GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HOT_PUMP_CTRL_Pin);//热水泵
gpio_init(HEAT_TANK_IN_CTRL_GPIO_Port,							GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HEAT_TANK_IN_CTRL_Pin);//热罐进水控制阀
gpio_init(NOR_OUT_CTRL_GPIO_Port, 									GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	NOR_OUT_CTRL_Pin);//常温水出水控制阀
gpio_init(HEAT_OUT_CTRL_GPIO_Port, 									GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HEAT_OUT_CTRL_Pin);//热水出水控制阀
gpio_init(COOL_IN_CTRL_GPIO_Port, 									GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	COOL_IN_CTRL_Pin);//冷水进水控制阀
gpio_init(SODA_IN_WATER_CTRL_GPIO_Port, 						GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	SODA_IN_WATER_CTRL_Pin);//苏打水进水控制阀
gpio_init(SODA_OUT_WATER_CTRL_GPIO_Port, 						GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	SODA_OUT_WATER_CTRL_Pin);//苏打水出水控制阀
gpio_init(PRE_VALVE_CTRL_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	PRE_VALVE_CTRL_Pin);//预留控制阀
gpio_init(FAN_CTRL_GPIO_Port, 											GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	FAN_CTRL_Pin);//风扇
gpio_init(NULL_CTRL_GPIO_Port, 											GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	NULL_CTRL_Pin);//未使用
 			 
 
 
//UV灯  热罐加热使能  CAT1复位  
gpio_init(COOL_DECORATE_LIGHT_CTRL_GPIO_Port, 			GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	COOL_DECORATE_LIGHT_CTRL_Pin);//冰水装饰灯控制
gpio_init(HOT_DECORATE_LIGHT_CTRL_GPIO_Port, 				GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HOT_DECORATE_LIGHT_CTRL_Pin);//热水装饰灯控制
gpio_init(COOL_SHINE_LIGHT_CTRL_GPIO_Port, 					GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	COOL_SHINE_LIGHT_CTRL_Pin);//冰水照射灯灯控制
gpio_init(HOT_SHINE_LIGHT_CTRL_GPIO_Port, 					GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HOT_SHINE_LIGHT_CTRL_Pin);//热水照射灯灯控制

#if(QIANG_YING_DEVICE == 1)
gpio_init(SODA_LIGHT_CTRL_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	SODA_LIGHT_CTRL_Pin);//苏达指示灯控制
#else
gpio_init(SODA_LIGHT_CTRL_GPIO_Port, 								GPIO_MODE_IPU, 	GPIO_OSPEED_50MHZ,	SODA_LIGHT_CTRL_Pin);//苏达指示灯控制
#endif
gpio_init(COOL_LIGHT_CTRL_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	COOL_LIGHT_CTRL_Pin);//冷水指示灯控制
gpio_init(WARM_LIGHT_CTRL_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	WARM_LIGHT_CTRL_Pin);//常温水指示灯控制
gpio_init(UV_LIGHT_CTRL_GPIO_Port, 									GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	UV_LIGHT_CTRL_Pin);//UV控制
gpio_init(HEAT_EN_CTRL_GPIO_Port, 									GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HEAT_EN_CTRL_Pin);//热水罐加热使能控制
gpio_init(COOL_EN_CTRL_GPIO_Port, 									GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	COOL_EN_CTRL_Pin);//冷水罐制冷使能控制
gpio_init(CAT1_PWR_KEY_CTRL_GPIO_Port, 							GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	CAT1_PWR_KEY_CTRL_Pin);//CAT1复位
gpio_init(BUZZ_EN_CTRL_GPIO_Port, 									GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	BUZZ_EN_CTRL_Pin);//蜂鸣器
// TDS 
#if (DEV_HARD_VER<=10001) 
gpio_init(SODA_H_TDS_FWD_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	SODA_H_TDS_FWD_Pin);//苏达罐高水位正
#else
gpio_init(SODA_H_TDS_FWD_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	SODA_H_TDS_FWD_Pin);//苏达罐高水位正
gpio_init(SODA_L_TDS_FWD_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	SODA_L_TDS_FWD_Pin);//苏达罐低水位正
#endif

gpio_init(SODA_COM_TDS_FWD_GPIO_Port, 							GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	SODA_COM_TDS_FWD_Pin);//苏达罐公共端
gpio_init(COOL_L_TDS_FWD_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	COOL_L_TDS_FWD_Pin);////冷罐低水位正
gpio_init(COOL_H_TDS_FWD_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	COOL_H_TDS_FWD_Pin);//冷罐高水位正
gpio_init(COOL_COM_TDS_FWD_GPIO_Port, 							GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	COOL_COM_TDS_FWD_Pin);//冷罐公共端
gpio_init(HEAT_L_TDS_FWD_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HEAT_L_TDS_FWD_Pin);//热罐低水位正
gpio_init(HEAT_M_TDS_FWD_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HEAT_M_TDS_FWD_Pin);//热罐中水位正
gpio_init(HEAT_H_TDS_FWD_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HEAT_H_TDS_FWD_Pin);//热罐高水位正
gpio_init(HEAT_COM_TDS_FWD_GPIO_Port, 							GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	HEAT_COM_TDS_FWD_Pin);//热罐公共端

//模拟IIC  EEPROM  TM1650  气压计	
gpio_init(IIC_AIR_PRE_SCL_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	IIC_AIR_PRE_SCL_Pin);//气压计
gpio_init(IIC_AIR_PRE_SDA_GPIO_Port, 								GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	IIC_AIR_PRE_SDA_Pin);//气压计
				
gpio_init(TM1650_SCL_GPIO_Port, 										GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	TM1650_SCL_Pin);//TM1650
gpio_init(TM1650_SDA_GPIO_Port, 										GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	TM1650_SDA_Pin);//TM1650
/****************************IO输入*********				**************************************/
gpio_init(SW_HEAT_GPIO_Port, 												GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	SW_HEAT_Pin);	//加热按钮开关 
gpio_init(SW_COOL_GPIO_Port, 												GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	SW_COOL_Pin);//制冷按钮开关

gpio_init(SW_CO2_PRESSURE_GPIO_Port, 								GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	SW_CO2_PRESSURE_Pin);//CO2压力开关
gpio_init(CHECK_UV_GPIO_Port, 											GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	CHECK_UV_Pin);//UV灯检测
gpio_init(CHECK_ZERO_GPIO_Port, 										GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	CHECK_ZERO_Pin);//零点检测
gpio_init(KEY_HOT_WATER_GPIO_Port, 									GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	KEY_HOT_WATER_Pin);//热水按键
#if (QIANG_YING_DEVICE == 1)//强饮
gpio_init(KEY_LOCK_GPIO_Port, 											GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	KEY_LOCK_Pin);//童锁按键
#else
gpio_init(KEY_LOCK_GPIO_Port, 											GPIO_MODE_OUT_PP, 	GPIO_OSPEED_50MHZ,	KEY_LOCK_Pin);//童锁按键
gpio_init(SW_FLOW_GPIO_Port, 												GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	SW_FLOW_Pin);//水流开关
#endif

gpio_init(KEY_SODA_WATER_GPIO_Port, 								GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	KEY_SODA_WATER_Pin);//苏达按键
gpio_init(KEY_COOL_WATER_GPIO_Port, 								GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	KEY_COOL_WATER_Pin);//冰水按键
gpio_init(KEY_WARM_WATER_GPIO_Port, 								GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	KEY_WARM_WATER_Pin);//常温水按键
gpio_init(TEST1_GPIO_Port, 													GPIO_MODE_IPU, 			GPIO_OSPEED_50MHZ,	TEST1_Pin);//测试点1 

}
void gpio_init(GPIO_T * GPIO_PROTx,GPIO_MODE_T  mode,GPIO_SPEED_T speed,uint16_t  pin)
{
	  GPIO_Config_T  configStruct;
		configStruct.pin = pin;
    configStruct.mode = mode;
    configStruct.speed = speed;
    GPIO_Config(GPIO_PROTx, &configStruct);
}


